package com.mapeditor.toolbar 
{
	import flash.display.Sprite;
	/**
	 * ...
	 * @author Osvaldo Cassaniga Junior
	 */
	public class MenuShape extends Sprite
	{
		private var _buttons:Array;
		public function MenuShape() 
		{
			_buttons = new Array();
		}
		
		public function destructor():void {
			for (var i:uint = 0, s:uint = _buttons.length; i < s; i++)
				_buttons[i].destructor();			
		}
		/**
		 * Adicioan um item (botao) ao menu
		 * @param	prop
		 */
		public function addItemMenu(prop:MenuShapeItemProperties):void{
			_buttons.push(new MenuShapeItem(prop));
			
		}
		/**
		 * Remove do display os botoes do menu
		 */		
		private function removeAll():void {
			for (var i:uint=0,s:uint=_buttons.length; i < s; i++)
				if (this.contains(_buttons[i]))
					this.removeChild(_buttons[i]);			
		}
		/**
		 * Mostra os botoes do menu verticalmente
		 */
		private function _showVertical():void {
			removeAll();
			addChild(_buttons[0]);
			
			for (var i:uint=1,s:uint=_buttons.length; i < s; i++)
			{
				addChild(_buttons[i]);
				_buttons[i].x = 0;
				_buttons[i].y = _buttons[i - 1].y + _buttons[i].prop.h  + 4;
			}
		}
		/**
		 * Adiciona os botoes do menu na posicao default
		 */
		public function outPut():void {
			this._showVertical();
		}
		/**
		 * Mostra o menu horizontalmente ou vertical.
		 * @param	align
		 */
		public function show():void {
			_showVertical();
			for (var i:uint=0,s:uint=_buttons.length; i < s; i++)				
				_buttons[i].alignSubMenu();
		}
		
		/**
		 * verifica se exixte algum submenu aberto
		 * @return
		 */
		public function checkSubMenuOpen():Boolean {
			for (var i:uint=0,s:uint=_buttons.length; i < s; i++)
				if (_buttons[i].subMenuOpen)
					return true;
			return false;
		}
		/**
		 * Seta o id do item que o menu foi mostrado.
		 * Seta o id em cada botao do menu para enviar juntamente com o evento
		 * @param	id
		 */
		
		public function setRefId(id:String):void {
			for (var i:uint=0,s:uint=_buttons.length; i < s; i++)
				_buttons[i].setRefId(id);
		}
		
	}

}